/*
 * Filename TestOrderService.java 2022年03月03日
 * Copyright © Ehome Co.Ltd. All Rgiths Reserved.
 * @author wuyingchao
 */
package com.ehome.poct.core.api.virtual;

import com.ehome.core.service.CrudService;
import com.ehome.poct.core.api.dto.check.CheckStatusDTO;
import com.ehome.poct.core.api.dto.check.TestUniRecordDTO;
import com.ehome.poct.core.api.dto.order.TestOrderDTO;
import com.ehome.poct.core.api.dto.order.TestOrderItemDTO;
import com.ehome.poct.core.api.vo.order.OrderItemPriceVO;
import com.ehome.poct.core.api.vo.order.OrderStatusVO;
import com.ehome.poct.core.api.vo.order.QrCodeVO;

import java.util.List;

/**
 * @author wyc
 * @since 2022/03/03 16:15
 **/
public interface TestOrderService extends CrudService<TestOrderDTO> {
    /**
     * 下单
     *
     * @param order
     */
    QrCodeVO place(TestOrderDTO order,Boolean isPay);

    /**
     * 联测下单
     *
     * @param order
     * @param updateContent
     * @return
     */
    QrCodeVO unionPlace(TestOrderDTO order, TestUniRecordDTO updateContent);

    /**
     * 联测预下单
     *
     * @param order
     * @param updateContent
     */
    void prePlace(TestOrderDTO order, TestUniRecordDTO updateContent);

    /**
     * 获取支付链接
     *
     * @param orderNo
     * @return
     */
    QrCodeVO getPayLink(String orderNo);

    /**
     * 获取支付状态
     *
     * @param orderNo
     * @return
     */
    OrderStatusVO getOrderStatus(String orderNo);

    /**
     * 获取支付中心支付状态
     *
     * @param orderNo
     * @return
     */
    OrderStatusVO getOrderFromCenter(String orderNo);

    /**
     * 删除订单
     *
     * @param orderNo
     */
    void delByOrderNo(String orderNo);

    /**
     * 修改订单状态
     * @param orderNo
     */
    void updateOrderStatus(String orderNo);

    /**
     * 通过订单号获取订单的 订单项基本售价信息
     * @param orderNo
     * @return
     */
    List<OrderItemPriceVO> getOrderItemPriceInfo(String orderNo);

    List<OrderItemPriceVO> getPriceItemByOrderItem(List<TestOrderItemDTO> items);

    void updateByOrderNo(CheckStatusDTO checkStatusDTO);

    TestOrderDTO getTestOrderByOrderNo(String orderNo);
}